// 像Apache一样可以在页面呈现目录列表,点击可以访问文件
let http = require('http');
let fs = require('fs');

let server = http.createServer();
let wwwDir = './www';

server.on('request', function (req, res) {
  fs.readFile('./template(简单版).html', function (err, data) {
    if (err) {
      return res.end('404 Not Found');
    }
    // 1.如何得到目录列表中的文件吗和目录名
    //    fs.readdir
    // 2.如何将得到的文件名和目录名替换到页面中去
    //    2.1 在template中需要替换的位置预留一个特殊的标记,
    //    2.2 根据files生成需要的HTML内容

    fs.readdir(wwwDir, function (err, files) {
      if (err) {
        return res.end('Can not found www dir');
      }
      // console.log(files); // 读取文件目录
      let content = '';
      files.forEach(function (item) {
        // 在ES6的 ` 字符串中,可以使用 ${} 来引用变量
        content +=
        `
          <tr>
            <td><a href="#">${item}</a></td>
          </tr>
        `;
      });
      // 2.3 解析与替换
      data = data.toString(); // 读取的内容都是二进制字符,转换为(解析)字符串,再进行替换
      // 普通的字符串解析替换,浏览器看到的结果就不一样了
      data = data.replace('模板', content);

      // 3.发送解析替换过后的数据
      res.end(data);
    });
  });
});

server.listen(3000, function () {
  console.log('running');
});
